home *** CD-ROM | disk | FTP | other *** search
- page 132,63,3,3
- opt rc
- ;
- ; MEM.ASM -- Memory diagnostic program for the DSP CARD 3
- ;
- ; Copyright (C) 1990, 1991 by Alef Null. All rights reserved.
- ; Author(s): Jarkko Vuori, OH2LNS
- ; Modification(s):
- ;
-
- ; program parameters
- ; X Y P
- ; 0000 +----------+ 0000 +----------+ 0000 +----------+
- ; | Internal | | Internal | | |
- ; 0100 +----------+ 0100 +----------+ | Internal |
- ; | LOG ROM | | SIN ROM | | |
- ; 0200 +----------+ 0200 +----------+ 0200 +----------+
- ; | External | | External | | |
- ; | | | | | External |
- ; 0A00 +----------+ 0A00 +----------+ | |
- ; | |
- ; 1200 +----------+
- ;
- ;
- ;
- begdblk equ $0200
- enddblk equ $09ff
- begpblk equ $0200
- endpblk equ $11ff
-
- nolist
- include 'intequlc.asm'
- include 'ioequlc.asm'
- list
-
- print macro value
- jclr #m_tdre,x:m_ssr,*
- movep value,x:m_srxl
- endm
-
- strout macro str
- move #str,r6
- jsr <prstr
- endm
-
- ; Reset vector
- org p:i_reset
- jmp start
-
- org p:$40
-
- ;
- ; Print out 24-bit hex number in a1
- ;
- prhex move #>10,x0
- move #>'A'-'9'-1,x1
- move #>'0',y1
- do #6,prhexl
- clr b
- do #4,digl
- lsl a
- rol b
- digl
- cmp x0,b
- jlo <bighex
- add x1,b
- bighex add y1,b
- print b1
- prhexl
- rts
-
-
- ;
- ; Print out null terminated r6 pointed text string
- ;
- prstr move x:(r6)+,b
- tst b
- jeq <prstre
- print b1
- jmp <prstr
- prstre rts
-
- ;
- ; Print out error msg
- ;
- prerr move a1,x:<tmp
- move r0,a
- jsr <prhex
- strout colon
- move y0,a
- jsr <prhex
- strout readtxt
- move x:<tmp,a
- jsr <prhex
- strout endtxt
- rts
-
-
- ;
- ; Program Start
- ;
-
- ; no wait states on external memory
- start movep #$0000,x:m_bcr ; no wait states
-
- ; initialize SCI
- movep #$0202,x:m_scr ; 8,n,1
- movep #$0022,x:m_sccr ; 9600 bit/s
-
- ; initialize port C
- movep #$000b,x:m_pcc ; TXD,RXD
- movep #$0014,x:m_pcddr ; SCLK,SC1 as output
- movep #$0000,x:m_pcd
-
- bset #2,x:m_pcd
-
- ; initialize pattern pointers
- move #<pat,r1
- move #<patlen-1,m1
- move m1,m2
-
- ; set memory
- loop move r1,r2
- ; X
- move #begdblk,r0
- do #enddblk-begdblk,setxloop
- move y:(r2)+,x0
- move x0,x:(r0)+
- setxloop
- ; Y
- move #begdblk,r0
- do #enddblk-begdblk,setyloop
- move y:(r2)+,y0
- move y0,y:(r0)+
- setyloop
- ; P
- move #begpblk,r0
- do #endpblk-begpblk,setploop
- move y:(r2)+,x0
- move x0,p:(r0)+
- setploop
-
- ; check memory
- move r1,r2
- move #-1,x0
- clr b
- ; X
- move #begdblk,r0
- do #enddblk-begdblk,chkxloop
- move y:(r2)+,y0
- move x:(r0)+,a
- cmp y0,a
- jeq <okx
- strout xtxt
- jsr <prerr
- okx
- tne x0,b
- chkxloop
- ; Y
- move #begdblk,r0
- do #enddblk-begdblk,chkyloop
- move y:(r2)+,y0
- move y:(r0)+,a
- cmp y0,a
- jeq <oky
- strout ytxt
- jsr <prerr
- oky
- tne x0,b
- chkyloop
- ; P
- move #begpblk,r0
- do #endpblk-begpblk,chkploop
- move y:(r2)+,y0
- move p:(r0)+,a
- cmp y0,a
- jeq <okp
- strout ptxt
- jsr <prerr
- okp
- tne x0,b
- chkploop
-
- ; change test patterns cyclically
- ok move #<pat,x0
- move (r1)+
- move r1,b
- cmp x0,b
- jne loop
-
- ; toggle indicator bit CTS (SC1) when one test run is complete
- bchg #$2,x:m_pcd
-
- jmp loop
-
-
-
-
- ;
- ; Y:mem
- ;
- org y:$0
- ; test patterns
- pat
- dc $ffffff
- dc $aaaaaa
- dc $555555
- dc $0ffff0
- dc $ff00ff
- dc $00ff00
- dc $f0f0f0
- dc $0f0f0f
- dc $101010
- dc $ffffff
- dc $000000
- patlen equ *-pat
-
-
- ;
- ; X mem
- ;
- org x:$0
- tmp ds 1
-
- ptxt dc 'P',' ',0
- xtxt dc 'X',' ',0
- ytxt dc 'Y',' ',0
- colon dc ':',' ','w','r','i','t','t','e','n',' ',0
- readtxt dc ' ','r','e','a','d',' ',0
- endtxt dc 13,10,0
-
- end
-